home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-03-31 | 20.4 KB | 632 lines |
- 1 KEY(10) ON:ON KEY(10) GOSUB 3
- 2 GOTO 5
- 3 RUN"MENU.BAT"+CHR$(13)
- 5 CLS
- 6 LOCATE 24,24:PRINT "Press F10 to return to menu>
- 100 DIM CF#(60)
- 110 DIM PV#(60)
- 120 CLS
- 130 PRINT:PRINT:PRINT
- 140 PRINT:PRINT:PRINT:PRINT
- 150 PRINT " \\\\\\\\\\\\\\\\\\\\\\\\\\\\"
- 160 PRINT " \$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 170 PRINT " \$$$$$ $$$$$"
- 180 PRINT " \$$$$ K-A-L-K $$$$"
- 190 PRINT " \$$$$$ $$$$$"
- 200 PRINT " \$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 210 FOR X = 1 TO 6:PRINT:NEXT X
- 220 PRINT " A Compound Interest Calculation Program"
- 230 FOR COUNT = 1 TO 2000
- 240 NEXT COUNT
- 250 CLS
- 260 FOR X = 1 TO 5:PRINT:NEXT X
- 270 PRINT " \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"
- 280 PRINT " \$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 290 PRINT " \$ $"
- 300 PRINT " \$ This is a public domain program $"
- 310 PRINT " \$ $"
- 320 PRINT " \$ by Paul Buchanan $"
- 330 PRINT " \$ $"
- 340 PRINT " \$ Peoria, Illinois $"
- 350 PRINT " \$ $"
- 360 PRINT " \$ and may be distributed freely. $"
- 370 PRINT " \$ $"
- 380 PRINT " \$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 390 FOR COUNT = 1 TO 2000
- 400 NEXT COUNT
- 410 CLS
- 420 FOR X = 1 TO 5:PRINT:NEXT X
- 430 PRINT " \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"
- 440 PRINT " \$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 450 PRINT " \$ $"
- 460 PRINT " \$ The Author $"
- 470 PRINT " \$ $"
- 480 PRINT " \$ assumes no responsibility $"
- 490 PRINT " \$ $"
- 500 PRINT " \$ resulting from the use $"
- 510 PRINT " \$ $"
- 520 PRINT " \$ of this material. $"
- 530 PRINT " \$ $"
- 540 PRINT " \$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 550 FOR COUNT = 1 TO 2500
- 560 NEXT COUNT
- 570 CLS:FOR COUNT = 1 TO 10:PRINT:NEXT COUNT
- 580 PRINT " *** PROGRAM ACCEPTS ONLY CAPITAL LETTERS ***"
- 590 PRINT
- 600 PRINT " PLEASE TURN >>> CAPLOCK <<< ON
- 610 FOR COUNT = 1 TO 2500:NEXT COUNT
- 620 CLS
- 630 LET A$=""
- 640 PRINT
- 650 PRINT " $$$$ MAIN MENU $$$$"
- 660 PRINT:PRINT
- 670 PRINT " I. Typical Compound Interest Calculations"
- 680 PRINT:PRINT " SOLVE FOR:"
- 690 PRINT:PRINT " (A) NUMBER OF PERIODS (N)
- 700 PRINT " (B) INTEREST RATE (I)
- 710 PRINT " (C) PRESENT VALUE (PV)
- 720 PRINT " (D) PAYMENT (PMT)
- 730 PRINT " (E) FUTURE VALUE (or BALLOON)
- 740 PRINT
- 750 PRINT " II. Compound Interest Utility Calculations"
- 760 PRINT:PRINT " SOLVE FOR:
- 770 PRINT:PRINT " (G) INTERNAL RATE OF RETURN (IRR)"
- 780 PRINT " (H) NET PRESENT VALUE (NPV)"
- 783 PRINT " (X) To EXIT to SYSTEM
- 786 PRINT " F1O To Return to Main MENU
- 790 PRINT:PRINT
- 800 BEEP:BEEP:BEEP
- 810 PRINT " WHICH CALCULATION?
- 820 A$=INKEY$ : IF A$ ="" THEN 820
- 830 IF A$ = "A" THEN 940
- 840 IF A$ = "B" THEN 1340
- 850 IF A$ = "C" THEN 1830
- 860 IF A$ = "D" THEN 2240
- 870 IF A$ = "E" THEN 2640
- 880 IF A$ = "F" THEN 6220
- 890 IF A$ = "G" THEN 4010
- 900 IF A$ = "H" THEN 5080
- 910 IF A$ = "X" THEN SYSTEM
- 920 GOTO 620
- 930 REM ****************** NUMBER OF PERIODS **********************
- 940 CLS
- 950 PRINT " SOLVING FOR 'NUMBER OF PERIODS':"
- 960 PRINT : PRINT
- 970 PRINT " WHAT IS THE ANNUAL INTEREST RATE"
- 980 INPUT " (I.E., 14.3) ";I#
- 990 PRINT
- 1000 INPUT " WHAT IS THE PRESENT VALUE ";PV#
- 1010 PRINT
- 1020 INPUT " WHAT IS THE PAYMENT AMOUNT ";PMT#
- 1030 PRINT
- 1040 INPUT " HOW MANY PAYMENTS EACH YEAR ";MO#
- 1050 PRINT
- 1060 INPUT " PAYMENTS IN ADVANCE (Y/N) ";T$
- 1070 IF T$ = "N" THEN S = 0 :ELSE S = 1
- 1080 PRINT
- 1090 PRINT " AMOUNT OF RESIDUAL OR BALLOON"
- 1100 INPUT " AT END OF LAST PERIOD ";FV#
- 1110 TST# = I#*PV#*PMT#*MO#
- 1120 IF TST# = 0 THEN GOSUB 6080
- 1130 IF TST# = 0 GOTO 940
- 1140 I# = I#/100/MO#
- 1150 N1# = I#*FV#-(1 +I#*S)*PMT#
- 1160 N2# = I#*PV#-(1 + I#*S)*PMT#
- 1170 N1# = N1#/N2#
- 1180 N1# = LOG(N1#)
- 1190 D# = LOG(1 + I#)
- 1200 N# = N1#/D#
- 1210 REM ***** RESET INTEREST
- 1220 I# = I#*MO#*100
- 1230 PRINT
- 1240 BEEP
- 1250 PRINT USING " THE TERM IS >>> ###.## <<< MONTHS";N#/MO#*12
- 1260 PRINT:PRINT:PRINT
- 1270 PRINT " HIT 'R' FOR RECOMPUTE OR 'M' FOR MAIN MENU"
- 1280 C$ = INKEY$:IF C$ = "" THEN 1280
- 1290 IF C$ = "H" THEN 3050
- 1300 IF C$ = "R" THEN 940
- 1310 IF C$ = "M" THEN 620
- 1320 GOTO 620
- 1330 REM ****************** INTEREST RATE **************************
- 1340 CLS
- 1350 PRINT
- 1360 PRINT " SOLVING FOR 'INTEREST RATE':"
- 1370 PRINT : PRINT
- 1380 INPUT " WHAT IS THE TERM (IN MONTHS) ";N#
- 1390 PRINT
- 1400 INPUT " WHAT IS THE PRESENT VALUE ";PV#
- 1410 PRINT
- 1420 INPUT " WHAT IS THE PAYMENT AMOUNT ";PMT#
- 1430 PRINT
- 1440 INPUT " HOW MANY PAYMENTS EACH YEAR ";MO#
- 1450 PRINT
- 1460 INPUT " PAYMENTS IN ADVANCE (Y/N) ";T$
- 1470 IF T$ = "N" THEN S = 0 ELSE S = 1
- 1480 PRINT
- 1490 PRINT " AMOUNT OF RESIDUAL OR BALLOON
- 1500 INPUT " AT END OF LAST PERIOD ";FV#
- 1510 TST# = N#*PV#*PMT#*MO#
- 1520 IF TST# = 0 THEN GOSUB 6080
- 1530 IF TST# = 0 THEN 1340
- 1540 I# = 0.15/MO#
- 1550 N# =((-N#/12)*MO#)
- 1560 V# = -PV#+PMT#*(1+I#*S)*(1 -(1+I#)^N#)/I#+FV#*(1+I#)^N#
- 1570 IF S = 1 GOTO 1600
- 1580 V1# = (PMT#*(-N#*I#*((1+I#)^(N#-1))-1+(1+I#)^N#)/(I#*I#))+N#*FV#*((1+I#)^(N#-1))
- 1590 GOTO 1610
- 1600 V1# = PMT#*(1+I#)/I#*((-N#*I#*(1+I#)^(N#-1)-1+(1+I#)^N#)/I#)+((1-(1+I#)^N#)/I#)+N#*FV#*(1+I#)^(N#-1)
- 1610 I2# = I#-(V#/V1#)
- 1620 IF ABS(I#-I2#) <=9E-09 THEN 1650
- 1630 I# = I2#
- 1640 GOTO 1560
- 1650 I# = I2#
- 1660 I# = I#*MO#
- 1670 REM ***** RESET INTEREST AND NUMBER
- 1680 I# = I#*100
- 1690 PRINT
- 1700 BEEP
- 1710 PRINT USING " THE ANNUAL INTEREST RATE IS >>> ###.##% <<<";((INT((I#*1000)*100+0.5))/100)/1000
- 1720 PRINT:PRINT:PRINT
- 1730 REM ****** RESET INTEREST AND NUMBER *******
- 1740 N# = ((N#/MO#)*-12)
- 1750 PRINT " HIT 'H' FOR HARDCOPY, 'R' FOR RECOMPUTE,"
- 1760 PRINT " OR 'M' FOR MAIN MENU."
- 1770 C$ = INKEY$:IF C$ = "" THEN 1770
- 1780 IF C$ = "H" THEN 3050
- 1790 IF C$ = "R" THEN 1340
- 1800 IF C$ = "M" THEN 620
- 1810 GOTO 620
- 1820 REM ************************* SOLVING FOR PRESENT VALUE *******************
- 1830 CLS
- 1840 PRINT
- 1850 PRINT " SOLVING FOR 'PRESENT VALUE':"
- 1860 PRINT : PRINT
- 1870 INPUT " WHAT IS THE TERM (IN MONTHS) ";N#
- 1880 PRINT
- 1890 PRINT " WHAT IS THE ANNUAL INTEREST"
- 1900 INPUT " RATE (I.E., 14.3) ";I#
- 1910 PRINT
- 1920 INPUT " WHAT IS THE PAYMENT AMOUNT ";PMT#
- 1930 PRINT
- 1940 INPUT " HOW MANY PAYMENTS EACH YEAR ";MO#
- 1950 PRINT
- 1960 INPUT " PAYMENTS IN ADVANCE (Y/N) ";T$
- 1970 PRINT
- 1980 PRINT " AMOUNT OF RESIDUAL OR BALLOON"
- 1990 INPUT " AT END OF LAST PERIOD ";FV#
- 2000 PRINT
- 2010 TST# = N#*I#*PMT#*MO#
- 2020 IF TST# = 0 THEN GOSUB 6080
- 2030 IF TST# = 0 THEN 1820
- 2040 IF T$ = "N" THEN S = 0 ELSE S = 1
- 2050 N# = MO#*N#/12
- 2060 N# = -N#
- 2070 I# = I#/100/MO#
- 2080 PV# = PMT#*(1+I#*S)*((1-(1+I#)^N#)/I#)+FV#*(1+I#)^N#
- 2090 PV# = INT(PV#*100+0.5)/100
- 2100 BEEP
- 2110 PRINT USING " THE PRESENT VALUE IS >>> $#,###,###.## <<<";PV#
- 2120 REM ***** RESET INTEREST AND NUMBER
- 2130 N# = N#/MO#*-12
- 2140 I# = I#*100*MO#
- 2150 PRINT:PRINT:PRINT
- 2160 PRINT " HIT 'H' FOR HARDCOPY, 'R' FOR RECOMPUTE,"
- 2170 PRINT " OR 'M' FOR MAIN MENU."
- 2180 C$ = INKEY$:IF C$ = "" THEN 2180
- 2190 IF C$ = "H" THEN 3050
- 2200 IF C$ = "R" THEN 1830
- 2210 IF C$ = "M" THEN 620
- 2220 GOTO 620
- 2230 REM ****************** PAYMENT ********************************
- 2240 CLS
- 2250 PRINT
- 2260 PRINT " SOLVING FOR 'PAYMENT':"
- 2270 PRINT : PRINT
- 2280 INPUT " WHAT IS THE TERM IN MONTHS ";N#
- 2290 PRINT
- 2300 PRINT " WHAT IS THE ANNUAL INTEREST"
- 2310 INPUT " RATE (I.E., 14.3) ";I#
- 2320 PRINT
- 2330 INPUT " WHAT IS THE PRESENT VALUE ";PV#
- 2340 PRINT
- 2350 INPUT " HOW MANY PAYMENTS EACH YEAR ";MO#
- 2360 PRINT
- 2370 INPUT " PAYMENTS IN ADVANCE (Y/N) ";T$
- 2380 PRINT
- 2390 PRINT " AMOUNT OF RESIDUAL OR BALLOON"
- 2400 INPUT " AT END OF LAST PERIOD ";FV#
- 2410 PRINT
- 2420 TST# = N#*I#*PV#*MO#
- 2430 IF TST# =0 THEN GOSUB 6080
- 2440 IF TST# =0 THEN 2230
- 2450 IF T$ ="N" THEN S =0 ELSE S=1
- 2460 N# =-MO#*N#/12
- 2470 I# = I#/100/MO#
- 2480 PMT# =(PV#-(FV#*(1+I#)^N#))/((1+I#*S)*(1-(1+I#)^N#)/I#)
- 2490 PMT# =INT(PMT#*100+0.5)/100
- 2500 REM ***** RESET INTEREST AND NUMBER
- 2510 N# =N#/MO#*-12
- 2520 I# = I#*MO#*100
- 2530 BEEP
- 2540 PRINT USING " THE PAYMENT PER PERIOD IS >>> $#,###,###.## <<<";PMT#
- 2550 PRINT:PRINT
- 2560 PRINT " HIT 'H' FOR HARDCOPY, 'R' FOR RECOMPUTE,"
- 2570 PRINT " OR 'M' FOR MAIN MENU."
- 2580 C$ = INKEY$:IF C$ = "" THEN 2580
- 2590 IF C$ = "H" THEN 3050
- 2600 IF C$ = "R" THEN 2240
- 2610 IF C$ = "M" THEN 620
- 2620 GOTO 620
- 2630 REM ****************** FUTURE VALUE ***************************
- 2640 CLS
- 2650 PRINT
- 2660 PRINT " SOLVING FOR 'FUTURE VALUE':"
- 2670 PRINT : PRINT
- 2680 INPUT " WHAT IS THE TERM IN MONTHS ";N#
- 2690 PRINT
- 2700 PRINT " WHAT IS THE ANNUAL INTEREST"
- 2710 INPUT " RATE (I.E., 14.3) ";I#
- 2720 PRINT
- 2730 INPUT " WHAT IS THE PRESENT VALUE ";PV#
- 2740 PRINT
- 2750 INPUT " WHAT IS THE PAYMENT AMOUNT ";PMT#
- 2760 PRINT
- 2770 INPUT " HOW MANY PAYMENTS EACH YEAR ";MO#
- 2780 PRINT
- 2790 INPUT " PAYMENTS IN ADVANCE (Y/N) ";T$
- 2800 PRINT
- 2810 TST# = N#*I#*PMT#*MO#*PV#
- 2820 IF TST# = 0 THEN GOSUB 6080
- 2830 IF TST# =0 THEN 2630
- 2840 IF T$ = "N" THEN S = 0 ELSE S = 1
- 2850 I# = I#/100/MO#
- 2860 N# =-N#*MO#/12
- 2870 F1# =PV#-(1+I#*S)*PMT#*((1-(1+I#)^N#)/I#)
- 2880 F2# =(1+I#)^N#
- 2890 FV# =F1#/F2#
- 2900 FV# =INT(FV#*100+0.5)/100
- 2910 BEEP
- 2920 PRINT USING " THE FUTURE VALUE IS >>> $#,###,###.## <<<";FV#
- 2930 PRINT
- 2940 REM ***** RESET INTEREST AND NUMBER
- 2950 N# = N#/MO#*(-12)
- 2960 I# =I#*MO#*100
- 2970 PRINT " HIT 'H' FOR HARDCOPY, 'R' FOR RECOMPUTE,"
- 2980 PRINT " OR 'M' FOR MAIN MENU."
- 2990 C$ =INKEY$:IF C$ = "" THEN 2990
- 3000 IF C$ ="H" THEN 3050
- 3010 IF C$ = "R" THEN 2640
- 3020 IF C$ ="M" THEN 620
- 3030 GOTO 620
- 3040 REM ****************** A-E HARDCOPY PROCEDURE *********
- 3050 CLS
- 3060 PRINT:PRINT:PRINT:PRINT:PRINT
- 3070 LINE INPUT "ENTER TODAY'S DATE: ";D$
- 3100 PRINT : PRINT : PRINT
- 3110 CLS
- 3120 PRINT:PRINT:PRINT:PRINT:PRINT
- 3130 LINE INPUT "REFERENCE NAME: ";CN$
- 3150 CLS
- 3160 PRINT:PRINT:PRINT:PRINT:PRINT
- 3170 PRINT " PERCENT TO INCREASE TERMINATION VALUE"
- 3180 PRINT:PRINT " TO COVER ADMINISTRATIVE EXPENSE"
- 3190 PRINT
- 3200 INPUT " ON TERMINATION (I.E., 5% = 5.0) : ";A%
- 3210 CLS:PRINT:PRINT:PRINT:PRINT:PRINT
- 3220 INPUT "HOW MANY COPIES WOULD YOU LIKE";CC
- 3223 CLS:PRINT:PRINT:PRINT:PRINT
- 3225 INPUT "DO YOU WANT COMPUTATION PARAMETERS AT BOTTOM (Y/N) ";BOT$
- 3240 CLS
- 3250 FOR X=1 TO 10:PRINT:NEXT X
- 3260 PRINT " $$$$$$$$$$$$$$$$$$$$$$$$$"
- 3270 PRINT " $$$$ P R I N T I N G $$$$"
- 3280 PRINT " $$$$$$$$$$$$$$$$$$$$$$$$$"
- 3290 LPRINT
- 3300 LPRINT" BOB TOLSON"
- 3310 LPRINT" 552 E IDLEWOOD"
- 3320 LPRINT" MORTON,ILLINOIS"
- 3330 LPRINT" 61550"
- 3340 LPRINT
- 3350 LPRINT " DATE: ";D$
- 3360 LPRINT
- 3370 LPRINT " REFERENCE: ";CN$
- 3380 LPRINT : LPRINT
- 3390 LPRINT " BEGINNING ENDING TERMINATION"
- 3400 LPRINT " PERIOD BALANCE PAYMENT INTEREST BALANCE VALUE (*)"
- 3410 LPRINT " ------ ---------- ---------- ----------- ---------- ----------"
- 3420 LPRINT
- 3430 LET PER# = 0
- 3435 IF PMT# = 0 THEN PMT# = PMT2#
- 3440 LET I2# = 0
- 3450 LET BBAL# =PV#
- 3460 LET ITOT# = 0
- 3470 LET PMTTOT# = 0
- 3480 LET PTOT# = 0
- 3485 LET TEMP$ = T$
- 3490 IF TEMP$ = "Y" THEN K = 0 ELSE K =1
- 3500 E = (N#/12)*MO#
- 3510 FOR J=K TO E
- 3520 PMT1# = PMT#
- 3525 LET PMT2# = PMT#
- 3530 IF K = 0 AND J = E THEN PMT# = 0
- 3540 I2# = BBAL#*(I#/MO#/100)
- 3550 I2# = INT(I2#*100+0.5)/100
- 3560 IF J = E THEN I2# =-BBAL#+PMT#+FV#
- 3570 IF TEMP$ = "Y" THEN GOSUB 3940
- 3580 ITOT# = ITOT# + I2#
- 3590 PMTTOT# = PMTTOT# + PMT#
- 3600 PTOT# = PTOT# + PMT# - I2#
- 3610 LET PER# = J
- 3620 EBAL# = BBAL# - PMT# + I2#
- 3630 IF J = E THEN TEV# = EBAL# ELSE TEV# = EBAL# + (EBAL# * A% / 100)
- 3640 GOSUB 3920
- 3650 IF J = 45 THEN GOSUB 3970
- 3660 BBAL# = EBAL#
- 3670 I2# = 0
- 3680 NEXT J
- 3690 LPRINT
- 3700 LPRINT USING " TOTALS #,###,###.## #,###,###.##";PMTTOT#,ITOT#
- 3710 LPRINT
- 3720 LPRINT : LPRINT " (*) END OF PERIOD"
- 3730 LPRINT : LPRINT
- 3733 IF BOT$ <> "Y" THEN GOTO 3880
- 3740 IF K = 0 THEN STORT$ = "IN ADVANCE" ELSE STORT$ = "IN ARREARS"
- 3750 LPRINT " >>>>>>><<<<<<<"
- 3760 LPRINT
- 3770 LPRINT " THIS AMORTIZATION AND TERMINATION VALUE SCHEDULE WAS CONSTRUCTED"
- 3780 LPRINT
- 3790 LPRINT USING "WITH A PRESENT VALUE OF $ #,###,###.##, AN ANNUAL INTEREST RATE OF ###.##%";PV#,I#
- 3800 LPRINT
- 3810 LPRINT "AND PAYMENTS OF $ ";PMT1#;" MADE ";MO#;" TIMES EACH YEAR (";STORT$;") "
- 3820 LPRINT
- 3830 LPRINT USING "OVER A PERIOD OF ### MONTHS, AND A FUTURE VALUE OF $ #,###,###.##.";N#,FV#
- 3840 LPRINT
- 3850 LPRINT " THE TERMINATION VALUE WAS CALCULATED BY INCREASING THE PERIOD"
- 3860 LPRINT
- 3870 LPRINT "ENDING BALANCE ";A%;"% TO COVER ADMINISTRATIVE COSTS OF EARLY TERMINATION."
- 3880 LPRINT CHR$(12)
- 3890 LET CC = CC - 1
- 3900 IF CC > 0 THEN 3290
- 3910 GOTO 620
- 3920 LPRINT USING " ### #,###,###.## #,###,###.## #,###,###.## #,###,###.## #,###,###.##";PER#,BBAL# ,PMT# ,I2# ,EBAL# ,TEV#
- 3930 RETURN
- 3940 I2# = 0
- 3945 LET TEMP$ = "N"
- 3960 RETURN
- 3970 FOR B=1 TO 7
- 3980 LPRINT
- 3990 NEXT B
- 4000 RETURN
- 4010 REM ****************** I.R.R. *********************************
- 4020 FOR X = 1 TO 60:CF#(X) = 0:NEXT X
- 4030 TE# = 0:PE# = 0:PF# = 0:IR# = 0:FV# = 0:CFTOT = 0
- 4040 CLS
- 4050 PRINT " *** I.R.R. CALCULATOR ***
- 4060 PRINT : PRINT
- 4070 PRINT " WHAT IS THE AMOUNT OF THE INVESTMENT"
- 4080 INPUT " AT POINT '0' ";PV#
- 4090 PRINT
- 4100 PRINT " WHAT IS THE VALUE OF THE INVESTMENT,"
- 4110 INPUT " IF ANY, AT END OF LAST PERIOD ";FV#
- 4120 CFTOT = FV#
- 4130 PRINT
- 4140 INPUT " HOW MANY PERIODS PER YEAR ";MO#
- 4150 PRINT
- 4160 INPUT " HOW MANY PERIODS IN TOTAL (MAX. = 60) ";N#
- 4170 TST# = PV#*MO#*N#
- 4180 IF TST# = 0 THEN GOSUB 6070: GOTO 4010
- 4190 IF N# > 60 THEN GOSUB 6070: GOTO 4010
- 4200 IF N# < MO# THEN GOSUB 6070: GOTO 4010
- 4210 PRINT
- 4220 CLS
- 4230 PRINT : PRINT
- 4240 FOR X = 1 TO N#:PRINT " FLOW FOR PERIOD # ";X;:INPUT S$
- 4250 IF S$ = "S" OR S$ = "s" THEN CF#(X) = CF#(X-1) ELSE CF#(X) = VAL(S$)
- 4260 CFTOT = CFTOT+CF#(X)
- 4270 NEXT X
- 4280 IF CFTOT =< PV# THEN GOSUB 6070
- 4290 IF CFTOT =< PV# THEN 4010
- 4300 CLS
- 4310 FOR X = 1 TO 10:PRINT:NEXT X
- 4320 PRINT " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 4330 PRINT " $$$ PLEASE STAND-BY WHILE I THINK THIS THROUGH $$$"
- 4340 PRINT " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 4350 BEEP
- 4360 IR# = 0.15/MO#:I1# = 0.25
- 4370 PF# = FV#/(1+IR#)^N#
- 4380 TE# = 0
- 4390 FOR X = 1 TO N#
- 4400 PE# = CF#(X)/(1+IR#)^X
- 4410 TE# = TE#+PE#
- 4420 NEXT X
- 4430 I1# = IR#*(PF#+TE#)/PV#
- 4440 IF ABS(IR#-I1#) < 9.8E-08 THEN IR# = IR#*MO#*100:GOTO 4460
- 4450 IR# = I1#:GOTO 4370
- 4460 CLS:PRINT:PRINT
- 4470 PRINT " THE INTERNAL RATE OF RETURN"
- 4480 PRINT
- 4490 PRINT " >>> PER ANNUM <<<"
- 4500 PRINT
- 4510 PRINT " FOR THIS SERIES OF CASH FLOWS"
- 4520 PRINT
- 4530 PRINT " IS"
- 4540 PRINT:PRINT
- 4550 BEEP
- 4560 PRINT USING " >>>>> ###.##% <<<<<";IR#
- 4570 PRINT:PRINT:PRINT:PRINT:PRINT
- 4580 PRINT " HIT 'H' FOR HARDCOPY, 'R' FOR RECOMPUTE,"
- 4590 PRINT " OR 'M' FOR MAIN MENU."
- 4600 C$ = INKEY$:IF C$ = "" THEN 4600
- 4610 IF C$ = "H" GOTO 4640
- 4620 IF C$ = "R" THEN 4040
- 4630 GOTO 620
- 4640 REM ****************** I.R.R. HARDCOPY *************************
- 4650 CLS
- 4660 FOR X = 1 TO 10:PRINT:NEXT X
- 4670 PRINT " $$$$$$$$$$$$$$$$$$$$$$$$$"
- 4680 PRINT " $$$$ P R I N T I N G $$$$"
- 4690 PRINT " $$$$$$$$$$$$$$$$$$$$$$$$$"
- 4700 LPRINT:LPRINT
- 4710 LPRINT " YOUR NAME HERE"
- 4720 LPRINT " YOUR ADDRESS HERE"
- 4730 LPRINT " PEORIA, ILLINOIS
- 4740 LPRINT " 616xx"
- 4750 LPRINT:LPRINT
- 4760 LPRINT " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 4770 LPRINT " $$$ INTERNAL RATE OF RETURN CALCULATION $$$"
- 4780 LPRINT " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 4790 LPRINT:LPRINT:LPRINT
- 4800 LPRINT " THIS I.R.R. CALCULATION WAS BASED ON:"
- 4810 LPRINT
- 4820 LPRINT USING " AN INVESTMENT AT POINT '0' OF $ #,###,###.##";PV#
- 4830 LPRINT
- 4840 LPRINT USING " A VALUE AT TERMINATION OF $ #,###,###.##";FV#
- 4850 LPRINT
- 4860 LPRINT USING " ## PERIODS PER YEAR";MO#
- 4870 LPRINT
- 4880 LPRINT USING " A TOTAL OF ### PERIODS";N#
- 4890 LPRINT
- 4900 LPRINT " AND THE FOLLOWING CASH FLOWS FOR THE PERIODS INDICATED;"
- 4910 LPRINT:LPRINT
- 4920 FOR X = 1 TO N#
- 4930 LPRINT USING " CASH FLOW IN PERIOD ### = $ #,###,###.##";X,CF#(X)
- 4940 LPRINT
- 4950 NEXT X
- 4960 LPRINT:LPRINT
- 4970 LPRINT " THE INTERNAL RATE OF RETURN"
- 4980 LPRINT
- 4990 LPRINT " >>> PER ANNUM <<<"
- 5000 LPRINT
- 5010 LPRINT " FOR THIS SERIES OF CASH FLOWS "
- 5020 LPRINT
- 5030 LPRINT " IS"
- 5040 LPRINT
- 5050 LPRINT USING " >>>>> ###.##% <<<<<";IR#
- 5060 LPRINT CHR$(12)
- 5070 GOTO 620
- 5080 REM ******************* PV# OF CASH FLOW SERIES *****************
- 5090 FOR X = 1 TO 60:CF#(X) = 0:PV#(X) = 0:NEXT X
- 5100 LET PVTOT# = 0
- 5110 CLS
- 5120 PRINT
- 5130 PRINT " *** NPV CALCULATOR ***"
- 5140 PRINT : PRINT
- 5150 PRINT " WHAT IS THE VALUE, IF ANY, AT "
- 5160 INPUT " THE END OF THE LAST PERIOD ";FV#
- 5170 PRINT
- 5180 INPUT " HOW MANY PERIODS PER YEAR ";MO#
- 5190 PRINT
- 5200 INPUT " HOW MANY PERIODS IN TOTAL (MAX. = 60) ";N#
- 5210 IF N# > 60 THEN GOSUB 6070: GOTO 5080
- 5220 IF N# < MO# THEN GOSUB 6070: GOTO 5080
- 5230 PRINT
- 5240 PRINT " AT WHAT ANNUAL INTEREST RATE SHOULD"
- 5250 INPUT " THE CASH FLOWS BE DISCOUNTED ";I#
- 5260 TST# = MO#*N#*I#
- 5270 IF TST# = 0 THEN GOSUB 6070: GOTO 5080
- 5280 I# = I#/MO#/100
- 5290 PRINT
- 5300 CLS
- 5310 FOR X = 1 TO N#
- 5320 PRINT " WHAT IS THE FLOW IN PERIOD ";X;:INPUT S$
- 5330 IF S$ = "S" THEN CF#(X) = CF#(X-1) ELSE CF#(X) = VAL(S$)
- 5340 PV#(X) = CF#(X)*((1+I#)^-X)
- 5350 PVTOT# = PVTOT#+PV#(X)
- 5360 NEXT X
- 5370 TV# = FV#*((1+I#)^-N#)
- 5380 PVTOT# = PVTOT#+TV#
- 5390 PVTOT# = ABS(PVTOT#)
- 5400 CLS
- 5410 PRINT : PRINT
- 5420 PRINT " THE NET PRESENT VALUE OF"
- 5430 PRINT
- 5440 PRINT " THE GIVEN CASH FLOWS"
- 5450 PRINT
- 5460 PRINT " IS"
- 5470 PRINT
- 5480 BEEP
- 5490 PRINT USING " >>>>> $ #,###,###.## <<<<<";PVTOT#
- 5500 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
- 5510 PRINT " HIT 'H' FOR HARDCOPY, 'R' FOR RECOMPUTE,"
- 5520 PRINT " OR 'M' FOR MAIN MENU."
- 5530 C$ =INKEY$:IF C$ = "" THEN 5530
- 5540 IF C$ = "H" THEN 5580
- 5550 IF C$ = "R" THEN 5080
- 5560 GOTO 620
- 5570 REM ****************** N.P.V. HARDCOPY ************************
- 5580 LPRINT:LPRINT
- 5590 CLS
- 5600 FOR X = 1 TO 10:PRINT:NEXT X
- 5610 PRINT " $$$$$$$$$$$$$$$$$$$$$$$$$"
- 5620 PRINT " $$$$ P R I N T I N G $$$$"
- 5630 PRINT " $$$$$$$$$$$$$$$$$$$$$$$$$"
- 5640 BEEP
- 5650 LPRINT " YOUR NAME HERE"
- 5660 LPRINT " YOUR STREET ADDRESS HERE"
- 5670 LPRINT " PEORIA, ILLINOIS"
- 5680 LPRINT " 616xx"
- 5690 LPRINT:LPRINT
- 5700 LPRINT " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 5710 LPRINT " $$$ NET PRESENT VALUE CALCULATION $$$"
- 5720 LPRINT " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
- 5730 LPRINT:LPRINT
- 5740 LPRINT " THIS NET PRESENT VALUE CALCULATION WAS BASED ON:"
- 5750 LPRINT
- 5760 LPRINT USING " A TERMINATION VALUE OF $ #,###,###.## (INCLUDED IN";FV#
- 5770 LPRINT " THE LAST CASH FLOW)"
- 5780 LPRINT
- 5790 LPRINT USING " ## PERIOD(S) PER YEAR";MO#
- 5800 LPRINT
- 5810 LPRINT USING " A TOTAL OF ## PERIODS";N#
- 5820 LPRINT
- 5830 LPRINT USING " AN ANNUAL DISCOUNT RATE OF ###.##%";I#*MO#*100
- 5840 LPRINT
- 5850 LPRINT " AND THE FOLLOWING CASH FLOWS FOR THE PERIODS INDICATED:"
- 5860 LPRINT:LPRINT
- 5870 LPRINT " CASH PRESENT"
- 5880 LPRINT " PERIOD FLOW VALUE"
- 5890 LPRINT " ------ --------- ---------"
- 5900 LPRINT
- 5910 FOR X = 1 TO N#
- 5920 IF X = N# THEN CF#(N#) = CF#(N#)+FV#
- 5930 IF X = N# THEN PV#(N#) = PV#(N#)+TV#
- 5940 LPRINT USING " ## #,###,###.## #,###,###.##" ;X,CF#(X),PV#(X)
- 5950 NEXT X
- 5960 LPRINT:LPRINT:LPRINT
- 5970 LPRINT " THE NET PRESENT VALUE"
- 5980 LPRINT
- 5990 LPRINT " OF THE GIVEN CASH FLOWS"
- 6000 LPRINT
- 6010 LPRINT " IS"
- 6020 LPRINT
- 6030 LPRINT USING " >>>>> $$#,###,###.## <<<<<";PVTOT#
- 6040 GOTO 620
- 6050 LPRINT CHR$(12)
- 6060 END
- 6070 REM ****************** DIVISION BY ZERO ***********************
- 6080 CLS
- 6090 PRINT:PRINT:PRINT:PRINT
- 6100 PRINT " $$$$$$$$$$$$$":PRINT
- 6110 PRINT " $$$ ERROR $$$":PRINT
- 6120 PRINT " $$$$$$$$$$$$$":PRINT:PRINT:PRINT
- 6130 BEEP
- 6140 PRINT " >>> PLEASE TRY AGAIN! <<<"
- 6150 PRINT:PRINT:PRINT
- 6160 PRINT " HIT: 'S' FOR SAME COMPUTATION"
- 6170 PRINT " 'M' FOR MAIN MENU"
- 6180 C$ =INKEY$:IF C$ = "" THEN 6180
- 6190 IF C$ = "M" THEN 620
- 6200 RETURN
- 6210 REM ****************** ON ERROR PROCESSING *******************
- 6220 CLS
- 6230 PRINT:PRINT:PRINT:PRINT
- 6240 PRINT " $$$$$$$$$$$$$":PRINT
- 6250 PRINT " $$$ ERROR $$$":PRINT
- 6260 PRINT " $$$$$$$$$$$$$"
- 6270 PRINT:PRINT:PRINT
- 6280 BEEP
- 6290 PRINT " PLEASE TRY AGAIN!"
- 6300 FOR COUNT=1 TO 1500:NEXT COUNT
- 6310 GOTO 620
-